<?php
/*
  $Id: html_output.php,v 1.56 2003/07/09 01:15:48 hpdl Exp $

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2003 osCommerce

  Released under the GNU General Public License
*/

////
// The HTML href link wrapper function
  function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) {
    global $request_type, $session_started, $SID;

    if (!tep_not_null($page)) {
      die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine the page link!<br><br>');
    }

    if ($connection == 'NONSSL') {
      $link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;
    } elseif ($connection == 'SSL') {
      if (ENABLE_SSL == true) {
        $link = HTTPS_SERVER . DIR_WS_HTTPS_CATALOG;
      } else {
        $link = HTTP_SERVER . DIR_WS_HTTP_CATALOG;
      }
    } else {
      die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine connection method on a link!<br><br>Known methods: NONSSL SSL</b><br><br>');
    }

  ////
  // AP URL Rewriting
    if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {

      if (defined('URL_SLOGAN')) $link .= URL_SLOGAN . '/';

      if (tep_not_null($parameters)) {
        foreach (explode('&', $parameters) as $parameter) {
          if (ereg("cPath=([0-9_]+)", $parameter, $regs)) $cPath = $regs[1];
          if (ereg("products_id=([0-9]+)", $parameter, $regs)) $product_id = $regs[1];
          if (ereg("manufacturers_id=([0-9]+)", $parameter, $regs)) $manufacturer_id = $regs[1];
        }

        if (tep_not_null($cPath)) {
          $cPath_array = tep_parse_category_path($cPath);
          foreach($cPath_array as $category_id) {
            $category_name = tep_url_rewriting_cast(tep_get_categories_name($category_id));
            if (tep_not_null($category_name)) $link .= $category_name . '/';
          }
        }

        if (tep_not_null($manufacturer_id)) {
          $manufacturer_name = tep_url_rewriting_cast(tep_get_manufacturers_name($manufacturer_id));
          if (tep_not_null($manufacturer_name)) $link .= $manufacturer_name . '/';
        }

        if (tep_not_null($product_id)) {
          $product_name = tep_url_rewriting_cast(tep_get_products_name($product_id));
          if (tep_not_null($product_name)) $link .= $product_name . '/';
        } 
      }
    }
  // AP URL Rewriting
  ////

    if (tep_not_null($parameters)) {
      $link .= $page . '?' . tep_output_string($parameters);
      $separator = '&';
    } else {
      $link .= $page;
      $separator = '?';
    }

    while ( (substr($link, -1) == '&') || (substr($link, -1) == '?') ) $link = substr($link, 0, -1);

// Add the session ID when moving from different HTTP and HTTPS servers, or when SID is defined
    if ( ($add_session_id == true) && ($session_started == true) && (SESSION_FORCE_COOKIE_USE == 'False') ) {
      if (tep_not_null($SID)) {
        $_sid = $SID;
      } elseif ( ( ($request_type == 'NONSSL') && ($connection == 'SSL') && (ENABLE_SSL == true) ) || ( ($request_type == 'SSL') && ($connection == 'NONSSL') ) ) {
        if (HTTP_COOKIE_DOMAIN != HTTPS_COOKIE_DOMAIN) {
          $_sid = tep_session_name() . '=' . tep_session_id();
        }
      }
    }

    if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {
      while (strstr($link, '&&')) $link = str_replace('&&', '&', $link);

      $link = str_replace('?', '/', $link);
      $link = str_replace('&', '/', $link);
      $link = str_replace('=', '/', $link);

      $separator = '?';
    }

    if (isset($_sid)) {
	/*mysql5 migration changes winston nolan */
      /*$link .= $separator . $_sid;*/
	$link .= $separator . tep_output_string($_sid);
    }
/*
// AJAX Addto shopping_cart - Begin
    $link_ajax = '';
    if( tep_not_null($parameters) && preg_match("/buy_now/i", $parameters) && $page != 'ajax_shopping_cart.php'){
          $link_ajax = '" onclick="doBuyNowGet(\'' . tep_href_link( 'ajax_shopping_cart.php', $parameters, $connection, $add_session_id, $search_engine_safe) . '\'); return false;';
      }
 
    return $link . $link_ajax;
// AJAX Addto shopping_cart - End
*/ 
return $link;
  }

////
// The HTML image wrapper function

// "On the Fly" Auto Thumbnailer using GD Library originally Nate Welch (v1.5) Updated by various contributors (v1.7.1)
// Scales product images dynamically, resulting in smaller file sizes, and keeps
// proper image ratio.  Used in conjunction with product_thumb.php t/n generator.
function tep_image($src, $alt = '', $width = '', $height = '', $params = '') { 
  
// Set default image variable and code
    $image = '<img src="' . $src . '"';
      
// Don't calculate if the image is set to a "%" width
    if (strstr($width,'%') == false || strstr($height,'%') == false) { 
    $dont_calculate = 0; 
      } else {
          $dont_calculate = 1; 		
    }	
 // Don't calculate if image has "pixel" in its name
if (strstr($image,'pixel') == false || strstr($image,'pixel') == false) {
$dont_calculate = 0;
} else {
$dont_calculate = 1;
} 		      
// Do we calculate the image size?
    if (CONFIG_CALCULATE_IMAGE_SIZE && !$dont_calculate) { 
			    
// Get the image's information
    if ($image_size = @getimagesize($src)) { 
				      
    $ratio = $image_size[1] / $image_size[0];
				            
// Set the width and height to the proper ratio
    if (!$width && $height) { 
    $ratio = $height / $image_size[1]; 
	$width = intval($image_size[0] * $ratio); 
      } elseif ($width && !$height) { 
    $ratio = $width / $image_size[0]; 
    $height = intval($image_size[1] * $ratio); 
      } elseif (!$width && !$height) { 
    $width = $image_size[0]; 
    $height = $image_size[1]; 
  } 
								            
// Scale the image if not the original size
   if ($image_size[0] != $width || $image_size[1] != $height) { 
    $rx = $image_size[0] / $width; 
    $ry = $image_size[1] / $height; 
					    
   if ($rx < $ry) { 
  $width = intval($height / $ratio); 
    } else { 
  $height = intval($width * $ratio); 
    } 
												
  $image = '<img src="product_thumb.php?img='.$src.'&amp;w='.tep_output_string($width).'&amp;h='.tep_output_string($height).'"';
  }
																            
  } elseif (IMAGE_REQUIRED == 'false') { 
return ''; 
    } 
  } 
																	        
// Add remaining image parameters if they exist
  if ($width) { 
      $image .= ' width="' . tep_output_string($width) . '"'; 
        } 
  if ($height) { 
      $image .= ' height="' . tep_output_string($height) . '"'; 
        } 		
  if (tep_not_null($params)) $image .= ' ' . $params;
    $image .= ' border="0" alt=" ' . tep_output_string($alt) . ' "';
  if (tep_not_null($alt)) {
    $image .= ' title=" ' . tep_output_string($alt) . ' "';
    }
  $image .= '>';		
    return $image; 
																							}
//START COMMENT
//  function tep_image($src, $alt = '', $width = '', $height = '', $parameters = '') {
//    if ( (empty($src) || ($src == DIR_WS_IMAGES)) && (IMAGE_REQUIRED == 'false') ) {
//      return false;
//    }

// alt is added to the img tag even if it is null to prevent browsers from outputting
// the image filename as default
//    $image = '<img src="' . tep_output_string($src) . '" border="0" alt="' . tep_output_string($alt) . '"';

//    if (tep_not_null($alt)) {
//      $image .= ' title=" ' . tep_output_string($alt) . ' "';
//    }

//    if ( (CONFIG_CALCULATE_IMAGE_SIZE == 'true') && (empty($width) || empty($height)) ) {
//      if ($image_size = @getimagesize($src)) {
//        if (empty($width) && tep_not_null($height)) {
//          $ratio = $height / $image_size[1];
//          $width = $image_size[0] * $ratio;
//        } elseif (tep_not_null($width) && empty($height)) {
//          $ratio = $width / $image_size[0];
//          $height = $image_size[1] * $ratio;
//        } elseif (empty($width) && empty($height)) {
//          $width = $image_size[0];
//          $height = $image_size[1];
//        }
//      } elseif (IMAGE_REQUIRED == 'false') {
//        return false;
//      }
//    }

// Rob04 - kick in on-the-fly thumbnail generator if required image is thumbnail
// and supplied image is larger.
//    if ($image_size = @getimagesize($src)) {
//            if (($width < 101 || $height < 81) && ($image_size[0] > 101 && $image_size[1] > 81 )) {
//            $image = str_replace(".jpg",".thumb",$image);
//        }
//    }     
// 101 & 81 refer to settings in thumb.php 
// EndRob04

//    if (tep_not_null($width) && tep_not_null($height)) {
//      $image .= ' width="' . tep_output_string($width) . '" height="' . tep_output_string($height) . '"';
//    }

//    if (tep_not_null($parameters)) $image .= ' ' . $parameters;

//    $image .= '>';

//    return $image;
//}
//FORM STOP
////
// The HTML form submit button wrapper function
// Outputs a button in the selected language
  function tep_image_submit($image, $alt = '', $parameters = '') {
    global $language;

    $image_submit = '<div class="buttons"><button type="submit">' . tep_output_string($alt) . '';

/*    
	if (tep_not_null($alt)) $image_submit .= ' title=" ' . tep_output_string($alt) . ' "';

    if (tep_not_null($parameters)) $image_submit .= ' ' . $parameters;
*/
    $image_submit .= '</button></div>';

    return $image_submit;
  }

////
// Output a function button in the selected language
  function tep_image_button($image, $alt = '', $parameters = '') {
    global $language;

    return tep_image(DIR_WS_LANGUAGES . $language . '/images/buttons/' . $image, $alt, '', '', $parameters);
  }

////
// Output a separator either through whitespace, or with an image
  function tep_draw_separator($image = 'pixel_black.gif', $width = '100%', $height = '1') {
    return tep_image(DIR_WS_IMAGES . $image, '', $width, $height);
  }

////
// Output a form
  function tep_draw_form($name, $action, $method = 'post', $parameters = '') {
    $form = '<form name="' . tep_output_string($name) . '" action="' . tep_output_string($action) . '" method="' . tep_output_string($method) . '"';

    if (tep_not_null($parameters)) $form .= ' ' . $parameters;

    $form .= '>';
/*
// AJAX Addto shopping_cart - Begin
    if( preg_match("/add_product/i", $action) ){
      $form .= ' onSubmit="doAddProduct(this); return false;"';
  }
// AJAX Addto shopping_cart - End
*/
   return $form;
  }

////
// Output a form input field
  function tep_draw_input_field($name, $value = '', $parameters = '', $type = 'text', $reinsert_value = true) {
    $field = '<input type="' . tep_output_string($type) . '" class="inputbox" name="' . tep_output_string($name) . '"';

    if ( (isset($GLOBALS[$name])) && ($reinsert_value == true) ) {
      $field .= ' value="' . tep_output_string(stripslashes($GLOBALS[$name])) . '"';
    } elseif (tep_not_null($value)) {
      $field .= ' value="' . tep_output_string($value) . '"';
    }

    if (tep_not_null($parameters)) $field .= ' ' . $parameters;

    $field .= '>';

    return $field;
  }

////
// Output a form password field
  function tep_draw_password_field($name, $value = '', $parameters = 'maxlength="40"') {
    return tep_draw_input_field($name, $value, $parameters, 'password', false);
  }

////
// Output a selection field - alias function for tep_draw_checkbox_field() and tep_draw_radio_field()
  function tep_draw_selection_field($name, $type, $value = '', $checked = false, $parameters = '') {
    $selection = '<input type="' . tep_output_string($type) . '" name="' . tep_output_string($name) . '"';

    if (tep_not_null($value)) $selection .= ' value="' . tep_output_string($value) . '"';

    if ( ($checked == true) || ( isset($GLOBALS[$name]) && is_string($GLOBALS[$name]) && ( ($GLOBALS[$name] == 'on') || (isset($value) && (stripslashes($GLOBALS[$name]) == $value)) ) ) ) {
      $selection .= ' CHECKED';
    }

    if (tep_not_null($parameters)) $selection .= ' ' . $parameters;

    $selection .= '>';

    return $selection;
  }

////
// Output a form checkbox field
  function tep_draw_checkbox_field($name, $value = '', $checked = false, $parameters = '') {
    return tep_draw_selection_field($name, 'checkbox', $value, $checked, $parameters);
  }

////
// Output a form radio field
  function tep_draw_radio_field($name, $value = '', $checked = false, $parameters = '') {
    return tep_draw_selection_field($name, 'radio', $value, $checked, $parameters);
  }

////
// Output a form textarea field
  function tep_draw_textarea_field($name, $wrap, $width, $height, $text = '', $parameters = '', $reinsert_value = true) {
    $field = '<textarea name="' . tep_output_string($name) . '" wrap="' . tep_output_string($wrap) . '" cols="' . tep_output_string($width) . '" rows="' . tep_output_string($height) . '"';

    if (tep_not_null($parameters)) $field .= ' ' . $parameters;

    $field .= '>';

    if ( (isset($GLOBALS[$name])) && ($reinsert_value == true) ) {
      $field .= stripslashes($GLOBALS[$name]);
    } elseif (tep_not_null($text)) {
      $field .= $text;
    }

    $field .= '</textarea>';

    return $field;
  }

////
// Output a form hidden field
  function tep_draw_hidden_field($name, $value = '', $parameters = '') {
    $field = '<input type="hidden" name="' . tep_output_string($name) . '"';

    if (tep_not_null($value)) {
      $field .= ' value="' . tep_output_string($value) . '"';
    } elseif (isset($GLOBALS[$name])) {
      $field .= ' value="' . tep_output_string(stripslashes($GLOBALS[$name])) . '"';
    }

    if (tep_not_null($parameters)) $field .= ' ' . $parameters;

    $field .= '>';

    return $field;
  }

////
// Hide form elements
  function tep_hide_session_id() {
    global $session_started, $SID;

    if (($session_started == true) && tep_not_null($SID)) {
      return tep_draw_hidden_field(tep_session_name(), tep_session_id());
    }
  }

////
// Output a form pull down menu
  function tep_draw_pull_down_menu($name, $values, $default = '', $parameters = '', $required = false) {
    $field = '<select name="' . tep_output_string($name) . '"';

    if (tep_not_null($parameters)) $field .= ' ' . $parameters;

    $field .= '>';

    if (empty($default) && isset($GLOBALS[$name])) $default = stripslashes($GLOBALS[$name]);

    for ($i=0, $n=sizeof($values); $i<$n; $i++) {
      $field .= '<option value="' . tep_output_string($values[$i]['id']) . '"';
      if ($default == $values[$i]['id']) {
        $field .= ' SELECTED';
      }

      $field .= '>' . tep_output_string($values[$i]['text'], array('"' => '&quot;', '\'' => '&#039;', '<' => '&lt;', '>' => '&gt;')) . '</option>';
    }
    $field .= '</select>';

    if ($required == true) $field .= TEXT_FIELD_REQUIRED;

    return $field;
  }

////
// Creates a pull-down list of countries
  function tep_get_country_list($name, $selected = '', $parameters = '') {
    $countries_array = array(array('id' => '', 'text' => PULL_DOWN_DEFAULT));
    $countries = tep_get_countries();

    for ($i=0, $n=sizeof($countries); $i<$n; $i++) {
      $countries_array[] = array('id' => $countries[$i]['countries_id'], 'text' => $countries[$i]['countries_name']);
    }

    return tep_draw_pull_down_menu($name, $countries_array, $selected, $parameters);
  }
?>
